package ace.module.mail.address.api.model.dto;

import io.swagger.v3.oas.annotations.media.Schema;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;

import jakarta.validation.constraints.*;
import jakarta.annotation.Nullable;
import java.io.Serializable;

/**
* 邮寄地址 data transform object.
*
* @author Caspar
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@Schema(title = MadMailAddressDto.TABLE_DESC)
public class MadMailAddressDto implements Serializable {

  public static final String TABLE_NAME = "mad_mail_address";
  public static final String TABLE_DESC = "邮寄地址";
  public static final String ID_COLUMN_NAME = "id";
  public static final String ID_TITLE = "id";
  public static final String ID_DESC = "";
  public static final String MAD_APP_ID_COLUMN_NAME = "mad_app_id";
  public static final String MAD_APP_ID_TITLE = "邮寄地址应用id";
  public static final String MAD_APP_ID_DESC = "";
  public static final String ACCOUNT_ID_COLUMN_NAME = "account_id";
  public static final String ACCOUNT_ID_TITLE = "账户id";
  public static final String ACCOUNT_ID_DESC = "";
  public static final String TYPE_COLUMN_NAME = "type";
  public static final String TYPE_TITLE = "邮寄地址类型";
  public static final String TYPE_DESC = " 1-接收地址 2-邮寄地址";
  public static final String CONTACTS_COLUMN_NAME = "contacts";
  public static final String CONTACTS_TITLE = "联系人";
  public static final String CONTACTS_DESC = "";
  public static final String CONTACT_PHONE_COLUMN_NAME = "contact_phone";
  public static final String CONTACT_PHONE_TITLE = "联系电话";
  public static final String CONTACT_PHONE_DESC = "";
  public static final String POST_CODE_COLUMN_NAME = "post_code";
  public static final String POST_CODE_TITLE = "邮政编码";
  public static final String POST_CODE_DESC = "";
  public static final String COUNTRY_CODE_COLUMN_NAME = "country_code";
  public static final String COUNTRY_CODE_TITLE = "国家code";
  public static final String COUNTRY_CODE_DESC = "";
  public static final String COUNTRY_COLUMN_NAME = "country";
  public static final String COUNTRY_TITLE = "国家";
  public static final String COUNTRY_DESC = "";
  public static final String PROVINCE_CODE_COLUMN_NAME = "province_code";
  public static final String PROVINCE_CODE_TITLE = "省code";
  public static final String PROVINCE_CODE_DESC = "";
  public static final String PROVINCE_COLUMN_NAME = "province";
  public static final String PROVINCE_TITLE = "省";
  public static final String PROVINCE_DESC = "";
  public static final String CITY_CODE_COLUMN_NAME = "city_code";
  public static final String CITY_CODE_TITLE = "市Code";
  public static final String CITY_CODE_DESC = "";
  public static final String CITY_COLUMN_NAME = "city";
  public static final String CITY_TITLE = "市";
  public static final String CITY_DESC = "";
  public static final String AREA_CODE_COLUMN_NAME = "area_code";
  public static final String AREA_CODE_TITLE = "区Code";
  public static final String AREA_CODE_DESC = "";
  public static final String AREA_COLUMN_NAME = "area";
  public static final String AREA_TITLE = "区";
  public static final String AREA_DESC = "";
  public static final String STREET_CODE_COLUMN_NAME = "street_code";
  public static final String STREET_CODE_TITLE = "街道";
  public static final String STREET_CODE_DESC = "";
  public static final String STREET_COLUMN_NAME = "street";
  public static final String STREET_TITLE = "街道";
  public static final String STREET_DESC = "";
  public static final String ADDRESS_COLUMN_NAME = "address";
  public static final String ADDRESS_TITLE = "详情地址";
  public static final String ADDRESS_DESC = "";
  public static final String DEFAULT_FLAG_COLUMN_NAME = "default_flag";
  public static final String DEFAULT_FLAG_TITLE = "默认标签,同一个数据域只能有一条值为1的数据 1=默认 非1=普通 ";
  public static final String DEFAULT_FLAG_DESC = "";
  public static final String SORT_COLUMN_NAME = "sort";
  public static final String SORT_TITLE = "排序";
  public static final String SORT_DESC = "";
  public static final String DELETE_FLAG_COLUMN_NAME = "delete_flag";
  public static final String DELETE_FLAG_TITLE = "删除标识";
  public static final String DELETE_FLAG_DESC = "0-未删除";
  public static final String CREATE_TIME_COLUMN_NAME = "create_time";
  public static final String CREATE_TIME_TITLE = "创建时间";
  public static final String CREATE_TIME_DESC = "单位-毫秒";
  public static final String UPDATE_TIME_COLUMN_NAME = "update_time";
  public static final String UPDATE_TIME_TITLE = "更新时间";
  public static final String UPDATE_TIME_DESC = "单位-毫秒";
  public static final String ROW_VERSION_COLUMN_NAME = "row_version";
  public static final String ROW_VERSION_TITLE = "版本号和乐观锁";
  public static final String ROW_VERSION_DESC = "";

  @Schema(title = ID_TITLE, description = ID_DESC)
  private Long id;

  @Schema(title = MAD_APP_ID_TITLE, description = MAD_APP_ID_DESC)
  private Long madAppId;

  @Schema(title = ACCOUNT_ID_TITLE, description = ACCOUNT_ID_DESC)
  private Long accountId;

  @Schema(title = TYPE_TITLE, description = TYPE_DESC)
  private Integer type;

  @Size(max = 255)
  @Schema(title = CONTACTS_TITLE, description = CONTACTS_DESC)
  private String contacts;

  @Size(max = 255)
  @Schema(title = CONTACT_PHONE_TITLE, description = CONTACT_PHONE_DESC)
  private String contactPhone;

  @Size(max = 255)
  @Schema(title = POST_CODE_TITLE, description = POST_CODE_DESC)
  private String postCode;

  @Size(max = 255)
  @Schema(title = COUNTRY_CODE_TITLE, description = COUNTRY_CODE_DESC)
  private String countryCode;

  @Size(max = 255)
  @Schema(title = COUNTRY_TITLE, description = COUNTRY_DESC)
  private String country;

  @Size(max = 255)
  @Schema(title = PROVINCE_CODE_TITLE, description = PROVINCE_CODE_DESC)
  private String provinceCode;

  @Size(max = 255)
  @Schema(title = PROVINCE_TITLE, description = PROVINCE_DESC)
  private String province;

  @Size(max = 255)
  @Schema(title = CITY_CODE_TITLE, description = CITY_CODE_DESC)
  private String cityCode;

  @Size(max = 255)
  @Schema(title = CITY_TITLE, description = CITY_DESC)
  private String city;

  @Size(max = 255)
  @Schema(title = AREA_CODE_TITLE, description = AREA_CODE_DESC)
  private String areaCode;

  @Size(max = 255)
  @Schema(title = AREA_TITLE, description = AREA_DESC)
  private String area;

  @Size(max = 255)
  @Schema(title = STREET_CODE_TITLE, description = STREET_CODE_DESC)
  private String streetCode;

  @Size(max = 255)
  @Schema(title = STREET_TITLE, description = STREET_DESC)
  private String street;

  @Size(max = 255)
  @Schema(title = ADDRESS_TITLE, description = ADDRESS_DESC)
  private String address;

  @Schema(title = DEFAULT_FLAG_TITLE, description = DEFAULT_FLAG_DESC)
  private Long defaultFlag;

  @Schema(title = SORT_TITLE, description = SORT_DESC)
  private Long sort;

  @Schema(title = DELETE_FLAG_TITLE, description = DELETE_FLAG_DESC)
  private Long deleteFlag;

  @Schema(title = CREATE_TIME_TITLE, description = CREATE_TIME_DESC)
  private Long createTime;

  @Schema(title = UPDATE_TIME_TITLE, description = UPDATE_TIME_DESC)
  private Long updateTime;

  @Schema(title = ROW_VERSION_TITLE, description = ROW_VERSION_DESC)
  private Long rowVersion;

}